#Copyright (C) Nial Peters 2012
#
#This file is part of AvoScan.
#
#AvoScan is free software: you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation, either version 3 of the License, or
#(at your option) any later version.
#
#AvoScan is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with AvoScan.  If not, see <http://www.gnu.org/licenses/>.
"""
The artwork module provides an ArtProvider class for delivering
the AvoScan icon to all the frames in the program.
"""
import wx
from cStringIO import StringIO


class AvoscanArtProvider(wx.ArtProvider):
    """
    ArtProvider class for loading AvoScan icons.
    """
    def __init__(self):
        wx.ArtProvider.__init__(self)


    def CreateBitmap(self, artid, client, size):
        """
        Overrides the wx.ArtProvider method, but loads the correct 
        sized icon from the pngfiles dict defined in this module.
        """
        bmp = wx.NullBitmap

        if size.width == -1:
            if client == wx.ART_MENU:
                sizerq = 16
            elif client == wx.ART_TOOLBAR:
                sizerq = 24
            else:
                sizerq = 64
        else:
            sizerq = size.width
       
        pngfile = pngfiles.get(artid, {}).get(sizerq, None)
       
        if pngfile:
            bmp = makeBitmap(pngfile)

        return bmp



def makeBitmap(data):
    """
    Creates a wx.Bitmap from 'data', where data is a string of raw image data.
    """
    stream = StringIO(data)
    return wx.BitmapFromImage(wx.ImageFromStream(stream))


#create a dict of raw image strings containing the AvoScan icons.
#this prevents us from having to load them from some file somewhere which will be in an
#OS specific location and therefore difficult to do in a cross platform way....
pngfiles = { "Avoscan": { \
                         16:'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\x00\x00\x01\xa5IDATx\x9c\xbd\x921k\x14Q\x10\xc7\x7f\xb3\xbbw{{9=\xf1TH\'\x96"6Z\xa4\x10RXia\'\x04\xc9a$\xd8\xd9\xf8\x11\xf4\x1b\x08"\x04\xec,\xd2X\xf9\x1d\xc4\x04,\x125\xd7^\xa3\x1c\x1aS\xc4\xecy\x97}\xbb\xfb\xb78o\xefv\x11\x05\x05\x1f<x\xc3\xcc\xfc\xfe\xf3f\xc6$\xf1/\xc7\xfb\xdbD3\x13\x80\xfd\x97\nl\xf1\xacl\xadU(M\xd5\xffX\x81w\xddtw\x83\xfd\xf6\x90F\x98@4\xc2=Z\xe6\xb4$\xfb-\xc0\xdauu\xb7\\2\xae\x93\x01\x04\x8e|!C\xcf/\xd1b\xd3C+Y\x01\x08J\x89`4,\xbb\xd5c\xfc\xd9\xc7\x12\x7f\xf2\xc50\xc0\xdb<O\xb8\xfe\x81\xf8\xd48/)\x96\x00D\x96\xdfyO2\xa8a\x87\r\xbc\xa1\xf0\x02#\xdf;G\r\x838\xc0\xc2Z\xa5\\IH\xe2a\x8f\x83\xee\x1e\xf1\x8d>\xa3&\x88\xb9{\xf9\x0bZ\xfa\xc41\x86xJ6\xcd\x914\x03\x18h\xb5G|\xed+)\x15\x00]_W\x07\x1c\xdf\xec3\x9ah\xce\x00\xc5\x18\xd7w92\xc1\x9b3\xf8\xd5\xa6F/2|\x813\x84\xd42\xb3\xbc\x98\xd4\xf4\xb18\x84(G\xd9/6\xe3\xe2\x01\xee\x84C\x1d\x87\x13\x0c\xe7}Ex\xdfh6S\xb4\xb6\xc3\xf7*\xa0sD\xdev\xe8\xd5\x80\xa8\xea+\xf6\xa0c\x17\xf4`\xab\xff\xed\xf1\x12\'\xef\xbd#>\x04#\xc2\x00\xc2\x14\xbd\\e!y;Y 3\xcb%y%\xc0O\x87\x9e\xbcf\xf4\xb1F\x9a\xd4!\xf1\xc0\x84m\xdc\'H\xb7\x15\xcd\xc5\x15\x80\xd98@\xb7\x91O\x84\xb8\x12\x8ag^\x86\x8f:;\xe5\xae\x03\xf9\xbc\xfd\x03\xd6\x7f\xeaV\xdb\x9c\xe0z\x00\x00\x00\x00IEND\xaeB`\x82',
                         24:'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4l;\x00\x00\x02\xbfIDATx\x9c\xb5\x94OhTW\x14\xc6\x7f\xe7\xbe\xf7f\xde4\x93D\xa3Rm\x16B\xa1 T-\xeaB\x17\xb1KA)\x88\x9b\xd2E)\xb6\x85.J7\x16J!\x12\x0c\x82\xed\xa6tUED7B\xa1\xe8\xc6]W\xe2\xc2X\x8a\xab\x8aR\x10\x84l\x1a\xb0\xb6\xea8\x99\xcc\xbcy\x7f\xee\xd7\xc5d\xc6\x99\xccTRH\x0f\\\xb8\x17\xce\xfd\xdd\xef~\xe7\xdck\x92\xf8?\xc2m4\xd0\xcc\xb4\xe1`3\x93$\xdbP\xf0\xaa\xd2rw\xfd\x9f\xc1_\xdd\xb2Zu\xbf\xc9\x0e\xed\x10\xd6\x01u\xaf/)\xed\x1d\xb4\xde\xe2m=hz\xfan\xa9\x98\xfd0mZ\x1bE\x1e\xe6o0\xe1\xae\x81_\x84\xae\x05\xeb\x06\x1bL\xc6\x9fY\xed\xe4)\x963\x8f\x05\x82\xb0\x80X\xa8\x92\xa2s\x07\x998{\x9b\xc7s3\xda\xb1n\xb0\x95J*\xfd\x9a\x15\xc7&i;\xeb\xd8\x16e\x14\xa1P\xa5\x80\xcb\xbb\xa9\xce\xde\xa5\xfe\xcdEb]Q\xb9\x7fo8\n\xf8\xf5C\x1b\xff~\xd7d\xfd\xfdGY\xba\x1c\xe0\x1b\x8e\xa0\xb0NA\xc2\x80\xa0\xe4\xe1\xc77\x89?}@\xa3\x99a\xe13\x86\xd4\x8d\x04\x9f?@\xfd\xf8\xc3\x17\xc9\xf3\x08\x92\x10k9\xcc\x07\x98\t\xca\x05\xfe\x977(\xbf\xb7H\xd2L\xb0P\x907(\x0fA$\r\x0c*\xe8\xe3\xdfh\x1e]\xa45\xb3D\xb2\xffO2\xee\x84\x8a\xc7\x91\xdb\x86\x00\xed\xb9I\x8a!\x0c}\xf4\x80\x86sh-g@q\xc5L\x9f/\xc2R\x81\xd2\x00\xb7\xb0\x9329@N\x02b\x19\x03\x08\xf6\xc2\xe1?h\x97\x1f\xc3\xd5=\x8c}q\x8f\xa7k\x05\x0f\xf4qb\xd0Xa\xc5;\xdc\xcd\x9d\x95U\xe8jl\xa3\xd7N\xa9\xc3\na\xd1\x14\xfa\xe0wV~\xd8\xcb\xd4\xbf\x82\r\x0bO/P\x7f\xe9Qk0\xf3\xaf\xbe\xb9\xbd,\xd6\xb5\x9f\x89\x87\xfc\xed\x07o\x7f\x9dl\xa5J\x18\x81\xa2\x02?*\xb9\x1b\xe5\x1cJB\x01\xe0\xbf\x9c\x0e$93\x1b\xd8\xd3\x03\xff\xfd$\xc2%4CA\x98\x0f\xb1\x06\xc1\x19\x8a<\xaa\xe4\xa0\xe9\xa5\xad\xafT\x9c\xbb\x8c\x8a\xe1\xe2\x02\xc5\x1e?\xfa\x820\xf3\x9c\xdaD\xd6\x81^\xff\x8e\xc0\x96\xa8\xbd\x12\xbc\xeb\x08\xe9[Op\xa5\x14\xc6\nD\x02l\xaf\xa6\xfd\xc9\'\x1e\x91M\xd4\x88\xab\x05\x1aoS\x9c<E$\xa9\x18\x05\x1ex\xd2\xa1\x05\x9a[\xf0\xb5\xf9\x196\x01|r\x9f\xe5f\x89\xd7\xcc\x93\xe4\xab\x12B\x0f\x91G7\xde\xa6\xfa\xa2\xef\xe313/\xa9\'t\xa0\x8f\xe7\xe4\x83y\xeb4\xd9\xec]\xea\xcd\x1c\x8b\x0bZy\x00\xde\xc0\xa9\x03\xbe\xb0\x8f\xaa\xd0\xc8W;d\x05\xc0\x19\xe4\x01s\x18\xd3\xcf\x08\'\xdbhs\x1b?\x95\xe0\xb7\xb4\xf0?}\xcb\xd8\xa5w*\xd5y\xaf\x00\xd1\xb3`\xad\xda\x9e\x15\xdd\x8fz#\xe3\x1f\xcdBH\x82Jh\xa0\xbe\x00\x00\x00\x00IEND\xaeB`\x82',
                         64:'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\x00\x00\x0f\x91IDATx\x9c\xe5\x9by\xb4\xddUu\xc7?\xfb\x9c\xdf\xefN\xef\xbe\xfb\x86$\x10\x10!i\x14\x94yV\x86\xa4@\xbb\x88\x88\xc5\x81\xa2E\xaa4\xd6\xa1F+D@\xb0\x80Ijie\x01E\xa1\xa12h\x02\xac\x02\x82\xe9\x00+P\xcb\x92@\x91H\x98DR\x16K\xc6\x10!\tC\xf2\xa6\xfb\xee\xf0\x1b\xce\xee\x1f\xbf\xdf}\xef\xe6\xe5\xbe\xbc\x81\x07\xb8\xc2^\xeb\xb7\xeet~\xe7\x9c\xef\xf7\xec\xbd\xcf>{\xff\xae\xa8*\xefe1\xef\xf6\x04\xdemy\xcf\x10 "*"\xdb\xa9\xfb{\x82\x80V\xc0\x1b\xb2\xd3\x13\xb0#\xf0\xb0\x93\x130\x12\xbc\xaa\xca\xc86;-\x01"Rn\xfe\xdc\n<\xec\xa4\x04\x88\xc8|\xa0\xad\xf1y4\xf0\x00\xb23\xc6\x01\xcd\xaa\xbf#\xf0\xb0\x13j\xc0\x08\xbb\xff\xe0X\xedw*\x02F\x80_\xa3\xaa\xcf\x8fu\xcf\x1f\x06\x01\x82\x08\x14\x10<y\x9e\xec\x0f\x91N\x81,\xb2l\x1a\xc24~ ]\x02\xedr\xb3\xb4\x8d\xda\xc5\xf6\x1e\xff\x98q\x8d\xad\xaa\xef\xfau\x1aj\x17?F\xc8i(3\xa7\xeb\xb4\xb3\xd1]\x8b(\'\x1a\xc7\x99mZ<\x8c\x80\xf9y\xed\xba\x07mu?\xe0\x00m\\\x13\x19\xfb]\x01\x8bj\x16\xd56E-\'\xa0t\xa3\xb9=P\xf6#\xdc\xed\xb3D\xacC\xb3\xcf\xa2\xd7\xae!\xb8\xe4q^\xe7o\xa8\x9a\x13Q\x8e\x97>\xceE\x15\xcd^\x8b\xfa)x\x9d,xU}gw\x01\x81N\xa0\xfd\xef\x1e\x92g\xff\xf1g\xc5\x1c\xb7\xfb\xf0\xa1\x1e\xd8\x1f\xdag\xc2\xd1\xa7\xb2i^\x15\xaf\x16\x91\x15\x05\x01D!\x1b\x10t\x0b\xfa\xf5{\xe9r\xf7\xa3m\xbd\xb8\xc1s\xb2pVn\r}}\xc77i\xf3\x0e=~\xcb9\xbd\x13\x04\xc8\xfd\xe48\xee|\x1f.\x8d\xd8W*l\x01\x0e\xa72k\x1e\xf9\xf5_\xf4Y\xb49\x1c\x88\x05\xac\x82q\x88I\xd7\xd3\x07\xb5\nF\x13"\xdaC\xdcy\x1d\xb4\xb9\x8b\xc40[-W\r\x8f1\x19\xf0\xf0N\x11p\xcb\x86\xae\x8b\xe6\xec\xf5\xfc?\xcc\xa3[\x8e\x05=\xd28\xfe\xd2\x98E\xf5h\xb0\xa7D\xa5\xadLA\x055\x80\x05\x15M\xbc\xb3\r\x13-\xf05!\xc2)b\x03\xc2YUt\xc1\xc7\x98\xd6\xe8\xbf\x94\xe1\xa6\xbe\xba\x9e9\x99\xb9yS\x84q;\x11\x16\xe4T\x96\x07\xa2\xe4N8t\xaf\xd5\xab>L7\xc7\x9bX\x179{\xf6t\xd7[\xc6e\x06\xb2\xe0\xd5\xc9\x87\x1e*\x80KA\x1a\x92\x15w>j\xe3\xe4}\x0c\xf8\x0e\xd5,\xde\x82?\xa6\xd4<\xd6\xa5\xbf\xe0\xc8I\xcfs\xaa5@\x16,\xc8\xfd\xef\xf2\x15]s\xd7\xe2\xe4\x7f\xba7{\xdf\x1b \x9a\x11\xc2B8\xf1\xb3\xd4w\x85h\xe4=\xc6\x81\x1a\xd4O\xed\xde\xa4\xaf\xd6%\xef=M\x880\x0e.;\x92\xf6\xe1\x1b\x81C\x81\xfd\x81\xe5\xea\xab\xe0\xa3T\'2\xdf)\xd7\x00]\xb1<\x92\xc1\xf5\x03\x94\xee\x1f\xb0\xb7l\r\xa3\xa3\xf19\x17N\xdf\x9br\x94\xc1\x86\xf1\xf6\xf7X\x01\x01\tHV\xdb\xa6\xe6\x80\x01\x1c8\x01\x15\xf8\xd1\xc1M\xe0\x01\xee\x00~\x02\xe4K\xeevy\xc5\xff\x9d\xbe\xdf\xdb\x87\x89-\xe8\x94i\x80@\x0e\xa8\xd3\x91q\xd3\xfbw\xa1\xc2Fj_P\xce\xf8.A`\x08\x9d\x00\x06C\xc3U)\x82\xa4\xb3\x8dq\x908\xc1\xd4\xfe\xd5(x\x0el\xfa\xfd\xad\'Q\xe8\x7fe8p\xbb`-\x03\xbdE\xec\x8f\x9f2\x05V\xbb\x1a?\xc9U\x89\xee\x9d\xa3\x1c\xdb3\x91yO\x89\x06\x08\xb4)\x92\x97Y\x85\x8a\xdf\xafl\xdd\xfdU\ng\xc3\x17N\xa2\xbf\xe2\x93q\x82\rS\xe0#|\xb5\x00\x88`=\x12\x1f`\x1d8Gl\x005\x10+\xda\xf3[l3\xf8s\x1ec V\x98V&Z<\xdb\xf5/}2\x1fs@-R\xe6\x1a&\xa8\x01SB\xc0\xc2\'\xa5\xa7x\x08~\x07\x86\xf2\xb9\x11\xeeL89C8(P\xf3R\'&\xe9\xd44\xd5\x01A\x1b\xef\xc5\xa0\x8e\xa4\x9d\x08\x18\x83X\x978=\xa3p\xd7\x19\xe4\x1bc}m\x1d\x03\xa1K\xb4#\x8a\x00\x07\xden\xd5\xb6\xe8\x13l\x1e\x80\x116\xf2\xb6\x12 \x06\xd1\x8c\xcc2\xd5\xc2\xfaiT\xb2[\xe0\xcf\xcb|\xfe\x8b\x0c\xd4\n\xf8\x95\xc4n3\x0ep\x82hJ\x803M\x1d\xa4\x8b% \x91\xa0\xd6%\x04X\xc58I\xd4\xff\xb6\xbd\xc95n\xf8\xe4\x1dT\x14$\x02DPL\xa2B\xd1~d\xf8N\xdb\x9e\xd7\xcf\x1f|\xfc\xdb\xc72k"(&|\x18\x12\x90\x7f[*\xa5\xf9/\xf3\xa6\\\x9d\xaf\xb2I\xb5R\xec\x81e\xb8\x93/\xa3\xbf\xdc\x86\x1f\nD \xa1 \x91 \xa1\x85\xc0@h j\xba\x02\x9b^\x06BAB\x83\xc4\xc9=D\x06no\x02\x9f\x9b\x8e\x96\xf6\xc3\xc5\x02\xb1\x81\x10\xc4\x99d\x0c\xffM\xa0\x1a\xbb?9\x96\xf1\x1d\x80\xde\n\x01w#\xed\x0f\xcee\xf5/g\xf9]\x9c_cF\x1d\xe1\n\xc7W\x8f\xa2\xe2\x05d#\x03Q:\xc9X\x12\xd0\xb1@d\x93\xabj\x91\xc65D\x86M4\xa3\x99\x9c\xbbg\x0f\x83\x07\xf8\xd4\xaf\xa8\x84\tQ\xc4\x02qz\x8fZ\xd0\xad\xc0+5s\xe7\x9d\xac\x9e(\x9e\t\x9b\xc0\xc5\x10=\xf5\x10\x07\xc7\xe4\xfa\xe8\x0c\x8b=\xb7b\xff\xe2\xc3T7[<\xa7hd\x00EB\x93L0\x04i\x90\x01\xa0\xc3\xfb\x00Qj\x02\xd6\x815I\x04\xe8;x`\x8fm\xc1\x9f\xf2\x02\xb5P\xb1^D\x1cK\xe2\x18I\xb5L\x04\xcd9\\\xf9\xb0\x82\xf9\xde)\x95\xa3.\x9e \x9e\ti\x80@\xc7\xac\x87X\x17.)\x19\xcb@\x07\xb7X9\xedC\xd4\x02\x8b\xb8tu\xd0\x04p$H]\x10g\xd1\xc8"\xce"\xb1M\xc9HV]\x9dI\xd48\xf2\x90\xc0`"\x90\x8d+\xb1#\x07m\xf4\xed,6NLI\x94$>\x08A\xca\x9f)\xc8\x0c\xa9\xb0\xeai\xfc\t\xe2\x9fX\x1c\xf0\xcdgd`\xd9\xa1\x14\xa9\x15\xf1n*\xeb\xa7\x8f\xa2\xe6+\xb6\xdf\xc7\xc5\xa4\xea+\t\x19uIT\xdcY\xc4I\x1a\xcc8L\x90\x0e\xe7b\xc8x\xc9\xfeoL\xb2\xd7o\xbe\x14\xb3\xf9\xf2&\x02F\x1coN}\x8e\x9a\x17\x11{\x0e\xac\xa2\xb9t7\xb8f]\xde\xa3\xdf\xe4ta\xb9\xf0\xf6D\x82B\x87\xe8k\xd9\xc2\x01\x14\x89=\xe5\x82\x903>\n\x15\x81\xb2\xc15<\xbdKm=d\x18<\x0eO#\xe4\xb9*T_\x07~\x06l\x00^\xb1\x90\x89\r=Hq#\x04\xf7Ap\xf9\xf0\x90\x87>E\xf0\xc4Ad\x9a\xa7\xb1\xf2\x83\xe4\xdag\xe3N\xbe\x9b*\n\x12cr!a\xee\x9aj\xd1\xbf\x08D\x89\'\x1a\xd6\x8dK\x03\x04\xec9\x8fKt\xc5\xb1\x90\xdb\x83\xf0\xd4Uh\xac\x84\xa1\x87\rR\xa7\x17\x9a\x04t \xc8@\x0eoF\x80\xf9\xf5f\xa8/\x04\xef\xe1"\x11u\x1c\xe1\xb8&u\xd0zB/\x0f~\x84\xfa\x0e\x1e\xdcs["\x00\xcex\x9a\xc16\xc1V#\xa2\x9b\xe7\x91\xe3,\xcd\xff\x132\xeb\x82\xc5c\xe7\x01\'L\x00\xc2t\xa1\xf0\x86\xb7\x7f\xb5v\xd2\n\x82\xb6\x1c&\xf6\x91\xba\x87ufx\x1bs\x06j\x06y\xec5b9$\x93\x8fL\x00b\xf0c\x8f\xd0\x84I\xa87\x0e9\xf0MB\xcf%\x04x\x0e2\x0e\xf5"\xb8w\x0e\xd9\xe6v_y\x9a\xda\xf5>\x8e})|\xe9\x11^\xfci/\xfb\xe9qZ\x9b\x08\x01c:\xc1o?#[\xa4M\xde`\xb6\xba\xe3VQ\xed\xccc\xd5Cb\x93\x0471\x80"*h-C\xb8nw2\xf1\x11\xe4#\x82$S\x17;B\x82\xed\xc1\x8f\x92\xbe8\xf0u\x88I\xcd)\xdd=T\xc0y0\xff%\xb6\x01w\xfd~\xe4\xf8\x059\xf2p\xd8\xc1\x9c\xa9\xc7\xeb\xf8Tl"\x04tV\x19\xe8\x18$\xce-\xa9\x99]j\xc3>C\x04\xa3\xa9\xd7w\x02}Y\xaak\xe7P\xac\xf8\xb48\xf0\xa6\xe2\x11!)\xf6QF~\xfa\xf78M\xf7zd\x88d\x81\x84\x88\x8f\xbf\xb8-\t|39`-D\x7f\x85\xd2\xe2\xac\xb9c\x19\x93\x80\xc5\x9f\xcc\xce\x8c\xc1\xce9\x86\xdeB\xad\xf5\x00\xb1\xc0of\xd3U\x18\x00\x1bf[5I\x06\x8b\xc4\xa3\x98\x04/\x89\xffo\xd1\xd7c\xd6\xc4\xe9\xae\xe1d8~h\x96S\x9f\xa3&\xcd3\xef\x1f\x0b\xc5\xe82*\x01\xb2\xf4x\xef[\x0fK\x7f\xfb+a6\xf8\x1a\xcc\x1bDc\x8b\xd78\xcd5^\x9dAW_B\x96\xbaE\xc9jL}\xd4\xc1\x1c\ne\xc0\xd8\xd1\x0fm\x0fo\xcfq\x83\x08\xd1aM\xf8\xcc3T\x86\x1a(*"\xa3P\xbac\x19\x95\x00]\xb2\xb7\\\x7f\x0c\xede\x1c\xef;\x9b\xbeR}\xb8m\x94FsV\x90\xc1">+\x80(\xa6J}\xac\xc4\xa4\xa2@\xab\xac\xc8P\xe7\x96\xf4\xe0\xb4\xc3\xbe\nu\x1c7\xa4\x1f\xa4q\xac\x96)2\x01\xc1\xde\xf4\xdb\xeb\x82\xac\x83B\'\xfcY\x80\xe9\xcdc\x1b\x8dM:\x8c\xfax\x8fN\xf7\xed\x0e\x16}\xfb\x9e\xc7\x92\xdf\xc58\xc1\xe4\xdcp[#I\x98\xdc,\xc56,?\xcf\x91\xa1+Ji\x1d_\xff#d\x14\rX\xaa/m\xa6\xcf\x90e\xf0OG\xbf\xb9X\xa6\x12\x8dso\x1f\xafx\xff\x07(\xf5\xea\xa8^"\x91\xc1*56t\xeb\x97\xd7\xf7xL{\xffG\x1a\xdfO\xd4\x14ZG\x82\xba\xa4\xb0\xec\x00:z\xa4\x0e\x7f\x9d\xbaz%9\x0b+\x18\x83:\x85\xdb\xaf\xa3=\xf6\x18\xdd\xebOB\xa2\x1ad\x1d\x9e\x13\xb4Q#0:\xb4R\xda\xc8\x18\xdf\xb2\x8e.\x9e\xcb\xb2l\x96\xe6\x97)5\x91I\x95\x05Zk\xc0\xe3\xa2\xee\x8dM\xc9\xfb/\xef\xae\x03#\x7fO*J\xb8\xc2\x15`\xa7\x10<@>]\xbf\xac"\xe2\x12_+i\xae\x10\xa0.\xa8\x1f\xe2Gkm83x\x03\xd1\xa1\xb3\xc3P =\x11-hI\xc0\xe1\x8aG\x0f\xb0\x1bL\xafS0.II\xa7\x95\x9b$s\x1bA\x05C<\xc5\x89\xe5\x18C\xa3\x1ad\xd2\x1ca\xe3\xb3U\xc8\t\xba>C\x99gc\x7f\x13e\x7f\xaf\x1fJ\t@U\xbf3\x99\xf1Z\x12\xa0\x92\x06\x1b\xdd\xe2\x8c4m7$\x0e\xc9\x035\x82\xfa\x18\xec\x8eMu\xc2\x12\x9c\x9e\x80\x96\x14\xb4\x9fV\x8a$\x9dl\xa9B\xee\x89\xc7\xe9`-\\\xf9\xdfl]\xbf\xe8\xbf\xcac\xf5\xb9#iI\x80(\xbeu\x1e\xccTc\xa2\xa4\x91\'\x89:Z\x86\xd3\xd6\xd5\x1f\x81?\xb9\xedwT9\xe4jW3\x0e\xf5b\xb4\x01>\x1dO\x8d\x83\x92P\xf6\xafC\xbd7;Y4_K\xe8)C&\xaa\xaaCxDd\xd9x\xc6kI\xc0\x85O\xa4OX\xd9\xd4\xfe\xd2\xaa\xccP\xa5&}5s#j\x93\xf3=\xa3OH\xb0^z\xce\xf7\xe2\xe4U4!\xde\x03z,T_\xa7~\xccK\xbd\x9b\xc7\xe8\xea\xeb\xe3\x1a\xaf\xd5\x97\x97\xdc\xa5~,\x0e\xdb\x0f\x16\x9c\xa7\xa8h\xa2\xfa\rU4\xa0\x9f\xcb3\xc8\xae\x19\x98x"\xa6\xa5|\xe0ez\xf3\x11qF\xd1FA\xd4\x90\x94\xcc\x8c\x83\xf6\x1ar\xdbS\xb9R\xbb#\xf7\xc0\xa3K\xf6\x9a\x8a1[\xfb\x80\xc5\xb2\x07\x92w\xf6y\xaa9\x8b\x11\x92\xb2\xb549\xa5\xc6*qC\xa0\x1c\xda]!\x89X\'-%|fxtJ\x84xq\xea\xf8HS\xe5\xa9/\x88\xb28\xee\xab1\xef\x16^\xe4\xae\xf2\x94\xb0\xde\x92\x80\xa7D\xdf@\x06Mp\x92\x04[}\xea\xb6y\x17hrHu%\xfc\xc4\xdeT9\xbe\xaf@\x17\x8d4\xff\xa4\xe4\x90W\xc3\x9eX\x08\xbc8I\x8c\x0e\x99\x81B&}\x7f\xeb\xc3\xe4\xe9\x83\xbb\x0e\xd0}\x96\xdct\xf9\xf8\xe3\xcf\x1dHK\x02\xee\xbcO^#&\xe0\x1e\xed\xd8X\xa7\xcb\xa6+`b\xb4Q\xa9\xf5\x14\xda\xc1\x9b^\x05\xce\xaf\xc1\x81oa\x16\x8b\xac\xf3b\n\xa50\xc9\x00\xd9D\xfd\x1b\xc9\x10\xda\xeb\xd0\x19\x11\xb9[\x89\n_%\xd4~)-F\xa7$\x02i\x99\x11\x12!\x87\'eb,Oz\\X\x8d\x06\xc4\xe2\xea\x8aq\x06"/\xcd\x02)&4`b\xcc\xf2\x83\x87\xcbW\x82A\xc7\xd8\x1e\x0b@\xc5\xe6\xe9<\xbb\xaaG\xfc-*B :\xa4\xfa\x98d\xd5\x9d(\x14\xea\xe4o~\x10\xe1\xac<G\x05\xd5\xc2\x1a\xd1ZS\xfc?b\xee\xc3\xdbR\xf3\xae0\x9a\xb4\xf6\x01\x10\x93\x97\x01TB\xbe\xa1\x14#\x94\x08\xe35\x99B\xc6\x81/\xb8,h3xVe\x9c\x1e5\xf6\xd6X\xa2\x93\xb9\x1b\xaa\xbd\xc7\x9cE\xa5h\x13\x15o\xa8z6\x86\xac\x83L\x8c\x96\x1c\xee\xe6\xb5\x08\xdf\x80\xae\x03\xab\x9d\xbf\xe6\xb4\xe0\xea\xabd\xbb\x1c\xe1d\xa5\xa5\x06\\s\x87\x143{\xb2a\xd1G3]U\x02\xe2\xe7\xb3\\\xd8W\xef\xb1!6\x96$\xf1\x19\xfbI\xca\xea\xaa\x83\xb6\xadG\x96\x1e\x85\xfe:\xd0\xdf\t\x8f\xf4b\xff\x152\xaf\tU\xa3I\x80\xb3\'=.K\xd7\xfc_\xa2^4|\x8e\xf4\x9bK\xe3\x11\xae\x11\xf9\x95\xf3\x04\xffy\xc2\xcc\xae\xc2K\xf5JE\xb7\xee\xa6c\xa4?&\xaa\x01\xa3\'E\xaf\x96\x92\xcc\xed\xd8\xd2}H\xb7\xd7\xbb\xc7K\x91\xac\xc0\xbb\xd6\xa3oC.\xc9\xfe\x86\x82\\vD\x13x\x81/\xfd\x86A5\xa8\x1f\xe1\xfa\x0c\x96\x18B\x1f\n\x0e\xc8\xe2\xd7\x95 \xf6\xb7\xd7\xba4\xea\xd3\xa1\xe7\x03\x1a\xdb\x9f\xa3|\xf3\x99\xcc\x0c?\x06z\x89fQ\x821\x01\r\x13\xf0\xcf\xaaz\xee\xe4\t\x10r\xa2g\xe4\x0b\xf2\xf3\xad\x19b*\xd3b\x825\xb0t+\xfd\x91\x81\xef\x7fd\xdb\xe7t\x16>A\xbf\n\x04`\xd5"\x16$0D\xce\xe2W\r"\x8e\xd8\xca\xb0\xdd\xa6\x87\xcb!\x02`\xf8\xac\x01\xc9\xc3R\xcb\xaf\xa4\xc8J\xd0\xde\xbf\xca\xc3r7\x16\x01"\xb2\x168\x02\xc6\xb7\xfa;$@d\xa9\xa7,\x8e\xefZ"\xd3N\xf9{6\x03\xd6|\x00\xbc\x1b\xa8\x06\xf3\x9al\x1e8\xefQ\x06\xc24J\ne\xdbrx#\xa7\x17\x8e\x11$4\x9c\x9f\x00\xe56\xec\x7f|\x9f\xbc\xfet7\x16<\xb4\xe9\xd5\x1f\x1f\xad{\x8c\x0b\xcc\x04\xd5\x1f\xc6Q\x178\\(,^%O\x9c\xf2\xb9\xbd\xf6\x96\xf2\xef%\xfb>G\xed\xd5\xe1\xdf/^K\x7fh\x9aR\xd9\xe9\xe10L\x13Uq:\x8d\xa1\xe2h\xf3\xe0\xe9k#\x800\xc9\xf3A\xd9\xdb\xae\xc0\x0fW\x18\xfa7\xc2\x1f\xed\xe6:_@\xfb\xc6\x05\xe6\xed  m\x96\x070\xd2]Q\xb6\x0e}\xfb\x835\x94\xf3\x8a\xddb\t\x1b\xf9\xfb\x10$\xf2P\x11d\x08\xb4\xa49\x13E\xd4$\x1c8\x01\x9b\xa6\xbd"\x83\xc9\x84\x84\xff\x92\xf5;\xec\x82\xb0\x16\xf7ds<\xe7@\x83\xac2\xb6\xddO\x16<\x8c\xb7:,Z\xab\xc2\xb4f\xf0\x1c\xe8\xf1\xa4!\xdc\x9a\xa1n\x93G\xd9h\x04L\xd98\xc9\x17x\xd1p\xd8\xec\xa7\xbfe\xd2\xed.\x17\'\x0f@\xfa\x8a\xb6\xd7\x89o|\x8a\xa2\xec\xa7\xf8\x8f\xcc\xca}\xe5\x8ez\xcf\x89\x1a\x16a\x8a\xf3m-\xa1\x8d\xb3:\xbc\xcd\xe3\xe8s\x80\x17p\xcc\xc1pe\x96\x0bg\xd7\xb7\x14\xfa0V\x90\x8aMHm\x147"\x12\x7f0RB\x83W2\x84W\xac\xa44\xb8R\xd4\xbc\xa6R\xd8\x07\xcak\xb4\x13\xf9xm\x89\xde\x13\x8f7\xda\x9b\xec\xea\xc3x\x8b\xa3#\x9e\xc5\xbfj%/\x7f\xeb\xf4\xd2\xb4\\\xd0_\xac\x89\x87|>\xda\xa2\xdf\xcdw/\xdbT\x1d\x8c}\xe4\x8d\x025\x8d(d\x94(4\xd4\xd5a\xda\x0c^\xaf\x8f\x12\x90\xdb\x9c\xa1\xff\xc6\x1bmw\xe7\xd5\x19\x13\xe2d0_\x07\x04*.\xaf0\xa1\xda\x9e\x88\xac\x04>\xdd\xf8<\xe5\x04\x8c\x04\x7f\x1a\xea\xdd\x0e\x8e\x7f\x97\x19\x9dml\xec\xfb\x14\x96j\xfaxs\x1e\xc3\xbe>\xec\xe2j\x1c\x12\xe6h\xb7\xd0\xa1\x8e\r\xc6\xe4\x1f\x8e\xea\xd5\'\xc82\x08\xd9\xd8ClD\xad\xb4k0m\xf5k\x99\xf3\xebp\xde\x91LGt\x10\x1d?\x01"2\x17x`\xb2\xe0\xa1\x89\x80\xb1\xfe`\xb8\xb3\xca\x1f\xc6_f\xdeEiN\xe9f\x815\x93\xedH\x04\xabiu\xd6`\x8c3\x8a\xf1\xd4\x9a\xc0s\x11Q,\x88\xf8\x19\xf5T\xd10\x9c\xcaJ\xc2[\x92\xe8\xff\x01\x91\xf7I\x0eh\xbb\xc7\x95\x00\x00\x00\x00IEND\xaeB`\x82'\
                        }
            }

